home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 6
/
CU Amiga Magazine's Super CD-ROM 06 (1996)(EMAP Images)(GB)(Track 1 of 4)[!][issue 1997-01].iso
/
imagine
/
extras
/
tools
/
irj5
/
sourcecode
/
irjmain2.s
< prev
Wrap
Text File
|
1996-08-10
|
90KB
|
2,179 lines
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
main2
LAUNCH movea.l _AbsExecBase,a6
cmpi.w #37,LIB_VERSION(a6)
bcc.s LAUNCH.05 ;GoodVersion
tst.l WBreturnMsg
bne.s LAUNCH.01
lea dosname,a1 ;Print an error message - the user doesn't have 2.0
jsr _LVOOldOpenLibrary(a6)
move.l d0,DOSlib
beq.s LAUNCH.01 ;Argh!
lea BadKS,a3
bsr IRJwritethis
movea.l DOSlib,a1
jsr _LVOCloseLibrary(a6)
LAUNCH.01 move.l #20,IRJexitcode
rts
BadKS dc.b 'Sorry, ImagineRequesterJester requires Kickstart 2.0!',$a,0,0
;-----------
LAUNCH.05 clr.l d0
lea dosname,a1
jsr _LVOOpenLibrary(a6)
move.l d0,DOSlib
beq.s LAUNCH.09 ;couldn't open dos.library
clr.l d0
lea aslname,a1
jsr _LVOOpenLibrary(a6)
move.l d0,ASLlib
bne.s LAUNCH.10
lea NoASLlib,a3
bsr IRJwritethis
movea.l DOSlib,a1
jsr _LVOCloseLibrary(a6) ;close dos.library
LAUNCH.09 move.l #21,IRJexitcode ;error - exit
rts
NoASLlib dc.b 'Error - asl.library not found!',$a,0
;-----------
LAUNCH.10 bsr ReadArgs ;READ CLI/WB ARGS
tst.l d7
bpl LAUNCH.15
lea UsageError,a3
bsr IRJwritethis
bsr CloseLibs
move.l #1,IRJexitcode ;error - exit
rts
UsageError dc.b 'Usage:',$a,' IRJ CONFIG/K,ID=IMAGINEDIR/K,IN=IMAGINENAME/K,'
dc.b 'IS=IMAGINESTACK/N,',$a,' IP=IMAGINEPRIORITY/N,QUIT/S',$a,$a
dc.b 'About:',$a,' IRJ was written by myself, Kirk Piepho, for '
dc.b 'Imagine by Impulse.',$a,' IRJ is PD/shareware - if you '
dc.b 'use it regularly, send me $5 (boy am I',$a,' gonna get rich!) '
dc.b 'to:',$a,$a,' Kirk Piepho email welcome:',$a,' '
dc.b '2383 N. Dale #307 rexx@wavefront.com',$a,' Roseville, MN '
dc.b '55113',$a,' USA',$a,$a,0,0
;---------------------------------------------------
LAUNCH.15 movea.l _AbsExecBase,a6
jsr _LVOForbid(a6)
lea portname,a1
jsr _LVOFindPort(a6) ;'HELLO?' . . .
tst.l d0
bne LAUNCH.100 ; . . . 'hi!'
jsr _LVOPermit(a6) ;this is _FIRST_ invocation of IRJ
move.l #IRJdata,TC_Userdata(a4) ;this is used by next invocation to find signal of IRJ code already running & IRJ_DTS & IM_codebase & IM_a4
moveq #-1,d0
jsr _LVOAllocSignal(a6)
move.l d0,IRJ_Signal
bpl.s LAUNCH.20
bsr FreeArgs
bsr CloseLibs
move.l #999,IRJexitcode ;error - couldn't allocate signal!
rts
;-----------
LAUNCH.20 bsr PrepDirectoryTableStruct ;* allocs _configdefault's, &:
move.l d0,IRJ_DTS ; IRJ_OBJECTdir IRJ_OBJECTfile IRJ_PIXdir
bne.s LAUNCH.25 ; IRJ_DXFdir IRJ_DXFfile IRJ_ANIMdir
lea MemoryError,a3 ; IRJ_FORMdir IRJ_FORMfile
bsr IRJwritethis ; IRJ_CYCLEdir IRJ_CYCLEfile IRJ_tempdir
move.l IRJ_Signal,d0 ; IRJ_SPLINEdir IRJ_SPLINEfile
jsr _LVOFreeSignal(a6)
bsr FreeArgs
bsr CloseLibs
move.l #25,IRJexitcode ;error - exit
rts
MemoryError dc.b 'Error - out of memory!',$a,0
;-----------
LAUNCH.25 move.l IRJ_DTS,d5
move.l #0,DTSconfigflag ;flag new configdefaults as original
move.l IRJconfig,d0
beq.s LAUNCH.29
movea.l d0,a1
bsr CONFIG_read
tst.l d7
beq LAUNCH.30 ;got it..
lea UserConfigError,a3
bsr IRJwritethis
LAUNCH.29 lea configname1,a1 ;'IRJ.cfg',0
bsr CONFIG_read
tst.l d7
beq LAUNCH.30
lea configname2,a1 ;'s:ImagineRequesterJester.cfg',0
bsr CONFIG_read
tst.l d7
beq.s LAUNCH.30
bra.s LAUNCH.30 ;couldn't open any config file to read...use hardwired ones
UserConfigError dc.b 'Error - could not read your config file',$a,'trying defaults '
dc.b 'IRJ.cfg & s:ImagineRequesterJester.cfg',$a,0
;---------------------------------------------------
LAUNCH.30 lea IRJ_Port,a1 ;'HEY, here i am!'
movea.l _AbsExecBase,a6
jsr _LVOAddPort(a6) ;hey, i just thought of something, do i ever RemPort() this?
bsr FindImagine
tst.l IRJ_ImagineTask
beq.s LAUNCH.40
bsr PatchImagine ;Imagine _is_ running already
tst.l IRJpriorityflag ;IMAGINEPRIORITY=
beq.s LAUNCH.35 ;no priority change
move.l IRJpriority,d0
movea.l IRJ_ImagineTask,a1
jsr _LVOSetTaskPri(a6)
LAUNCH.35 move.l IRJ_Signal,d1
moveq #0,d0
bset d1,d0
jsr _LVOWait(a6) ;SLEEP - can also wait on signal sent by my own QUITTINGroutine - which is what it should do now
jsr _LVOForbid(a6)
bra LAUNCH.75
;-----------
LAUNCH.40 tst.l IRJimaginename ;Imagine _is not_ yet running, should I launch it?
beq LAUNCH.65 ; no, go wait for it on LVOOpen & on my own signal
move.l IRJimaginedir,d1 ; yes, try running it
bne.s LAUNCH.45
move.l #nullstring,d1
LAUNCH.45 move.l #ACCESS_READ,d2
movea.l DOSlib,a6
jsr _LVOLock(a6)
move.l d0,templock1 ;new dir
beq LAUNCH.65 ;error - couldn't change dirs, patch LVOOpen and wait
move.l d0,d1
jsr _LVOCurrentDir(a6)
move.l d0,templock2 ;orig dir
movea.l _AbsExecBase,a6 ;patch LVOOpen to wait on Imagine we're about to run
jsr _LVOForbid(a6)
movea.l #-30,a0
movea.l DOSlib,a1
move.l #PatchImagine2,d0
jsr _LVOSetFunction(a6)
move.l d0,FailSafe_orig
jsr _LVOPermit(a6)
move.l #IRJruncommandstring+4,a0
move.l IRJimaginename,a3
LAUNCH.60 move.b (a3)+,d0
move.b d0,(a0)+
bne.s LAUNCH.60
move.l #IRJruncommandstring,d1 ;'run '+IRJimaginename
move.l #ImagineTags,d2
movea.l DOSlib,a6
jsr _LVOSystemTagList(a6)
move.l templock2,d1
jsr _LVOCurrentDir(a6)
move.l templock1,d1
jsr _LVOUnLock(a6)
bra.s LAUNCH.70
;-----------
LAUNCH.65 movea.l _AbsExecBase,a6
jsr _LVOForbid(a6) ; no, lets wait for it on LVOOpen & on my own signal
movea.l #-30,a0
movea.l DOSlib,a1
move.l #PatchImagine2,d0
jsr _LVOSetFunction(a6)
move.l d0,FailSafe_orig
jsr _LVOPermit(a6)
LAUNCH.70 move.l IRJ_Signal,d1
moveq #0,d0
bset d1,d0
movea.l _AbsExecBase,a6
jsr _LVOWait(a6) ;SLEEP - can also wait on signal sent by my own QUITTINGroutine - which is what it should do now
jsr _LVOForbid(a6)
tst.l IRJ_ImagineTask
bne.s LAUNCH.75
movea.l #-30,a0 ;Imagine never patched, so unpatch LVOOpen
movea.l DOSlib,a1
move.l FailSafe_orig,d0
jsr _LVOSetFunction(a6)
;-----------
LAUNCH.75 bsr UnPatchImagine
jsr _LVOPermit(a6)
move.l IRJ_Signal,d0 ;Free signal
jsr _LVOFreeSignal(a6)
lea IRJ_Port,a1 ;gotta go
jsr _LVORemPort(a6)
bsr FreeDirectoryTableStuff
bsr FreeArgs
bsr CloseLibs
move.l #0,IRJexitcode ;That's all folks....
rts
;---------------------------------------------------
LAUNCH.100 movea.l d0,a1 ;IRJ is _already_ running, update it or signal it to quit
movea.l MP_SIGTASK(a1),a1
movea.l TC_Userdata(a1),a0 ;IRJdata
move.l 4(a0),d2 ;IRJ_signal
move.l 8(a0),d5 ;IRJ_DTS
move.l 12(a0),d3 ;IRJ_ImagineCodeBase
move.l 20(a0),IRJ_ImagineTask ;IRJ_ImagineTask
jsr _LVOPermit(a6)
tst.l IRJquitflag ;QUIT=true, skip other args.
bne LAUNCH.145
tst.l IRJconfig ;CONFIG=
beq.s LAUNCH.115 ;no config arg
tst.l IRJ_ImagineTask ;Is Imagine running?
bne.s LAUNCH.105
move.l #0,DTSconfigflag ; no - update configdefaults of IRJ
bra.s LAUNCH.110
LAUNCH.105 move.l #1,DTSconfigflag ; yes - flag new configdefaults as updated
LAUNCH.110 movea.l IRJconfig,a1
bsr CONFIG_read
tst.l d7
beq.s LAUNCH.115
lea UserConfigError2,a3
bsr IRJwritethis
bsr FreeArgs
bsr CloseLibs
move.l #432,IRJexitcode
rts
UserConfigError2 dc.b 'Error - could not find/read your config file',$a,0
;-----------
LAUNCH.115 tst.l IRJ_ImagineTask
beq.s LAUNCH.120
tst.l IRJpriorityflag ;Imagine _is_ running
beq LAUNCH.150
move.l IRJpriority,d0 ;IMAGINEPRIORITY=
movea.l IRJ_ImagineTask,a1
jsr _LVOSetTaskPri(a6)
bra LAUNCH.150
;-----------
LAUNCH.120 tst.l IRJimaginename ;Imagine _is not_ yet running, should I launch it?
beq LAUNCH.150 ; no
move.l IRJimaginedir,d1 ; yes, try running it
bne.s LAUNCH.125
move.l #nullstring,d1
LAUNCH.125 move.l #ACCESS_READ,d2
movea.l DOSlib,a6
jsr _LVOLock(a6)
move.l d0,templock1 ;new dir
beq.s LAUNCH.150 ;error - couldn't change dirs, done
move.l d0,d1
jsr _LVOCurrentDir(a6)
move.l d0,templock2 ;orig dir
move.l #IRJruncommandstring+4,a0
move.l IRJimaginename,a3
LAUNCH.140 move.b (a3)+,d0
move.b d0,(a0)+
bne.s LAUNCH.140
move.l #IRJruncommandstring,d1 ;'run '+IRJimaginename
move.l #ImagineTags,d2
jsr _LVOSystemTagList(a6)
move.l templock2,d1
jsr _LVOCurrentDir(a6)
move.l templock1,d1
jsr _LVOUnLock(a6)
bra.s LAUNCH.150
;-----------
LAUNCH.145 moveq #0,d0 ;signal orig IRJ task to QUIT
bset d2,d0
jsr _LVOSignal(a6)
lea QuittingMsg,a3
bsr IRJwritethis
LAUNCH.150 bsr FreeArgs
bsr CloseLibs
move.l #0,IRJexitcode ;success, IRJ updated
rts
QuittingMsg dc.b 'Quitting the fabulous Imagine Requester Jester!',$a,0,0
;---------------------------------------------------------------------------------------------------
QUITTING_IMAGINE ;signal my task that user wants to quit
movem.l d2-d7/a2-a6,-(sp)
movea.l _AbsExecBase,a6
jsr _LVOForbid(a6)
lea portname,a1
jsr _LVOFindPort(a6) ;'where are you?'
movea.l d0,a1 ;IRJ is already running, update it or signal it to quit
movea.l MP_SIGTASK(a1),a1
movea.l TC_Userdata(a1),a0 ;IRJdata
move.l 4(a0),d1 ;IRJ_signal
jsr _LVOPermit(a6)
moveq #0,d0
bset d1,d0
jsr _LVOSignal(a6) ;tell task to quit
movem.l (sp)+,d2-d7/a2-a6
clr.l -(sp)
QUITTING_dothisfirst
nop ;this will get written over
nop
nop
rts
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
FindImagine
clr.l d0 ;ok, now look for/wait for/start imagine
lea intuitionname,a1 ;try finding a window of screen titled 'Imagine...'
movea.l _AbsExecBase,a6
jsr _LVOOpenLibrary(a6)
move.l d0,Intuilib
movea.l d0,a6
clr.l d0
jsr _LVOLockIBase(a6)
movea.l d0,a2 ;save it
movea.l ib_FirstScreen(a6),a0
FI.05 movea.l sc_Title(a0),a1
cmpi.l #'Imag',(a1)
bne.s FI.10 ;nope
cmpi.w #'in',4(a1)
beq.s FI.15 ;good enuf
FI.10 tst.l sc_NextScreen(a0)
beq FI.45 ;done searching, no match
move.l sc_NextScreen(a0),a0
bra.s FI.05
FI.15 movea.l sc_FirstWindow(a0),a0 ;screen title - 'Imagin.....'
movea.l wd_UserPort(a0),a0
movea.l MP_SIGTASK(a0),a1
move.l a1,-(sp) ;waiting on IRJ_ImagineTask when ready, so fill it last
move.l pr_CLI(a1),d0
beq.s FI.20
asl.l #2,d0 ;Imagine from CLI
movea.l d0,a1
move.l cli_Module(a1),d0
bra.s FI.25
FI.20 move.l pr_SegList(a1),d0 ;Imagine from WB
asl.l #2,d0
movea.l d0,a0
move.l 12(a0),d0
FI.25 asl.l #2,d0
movea.l d0,a0
FI.30 move.l -4(a0),d1 ;hunk size
cmpi.l #$b8000,d1
bgt.s FI.35
move.l (a0),d1
beq FI.99 ;done - no find code hunk
asl.l #2,d1
movea.l d1,a0
bra.s FI.30
FI.35 adda.w #4,a0
movea.l a0,a1 ;IRJ_ImagineCodeBase
adda.l d1,a0
suba.w #8,a0
move.l a0,IRJ_ImagineCodeEnd
cmpi.l #$bb000,d1
blt.s FI_3 ;3.0
cmpi.l #$e6000,d1
blt.s FI_4 ;4.0
bra FI_5 ;5.0
;---------------------------------------------------
FI_3 move.l #3,IRJ_ImagineVersion
movea.l d0,a0
FI_3.05 move.l -4(a0),d1
cmpi.l #$7000,d1
bgt.s FI_3.10
FI_3.07 move.l (a0),d1
beq FI.40 ;done
asl.l #2,d1
movea.l d1,a0
bra.s FI_3.05
FI_3.10 cmpi.l #$9000,d1
bgt.s FI_3.15
move.l a0,IRJ_ImagineA4Base
bra.s FI_3.07
FI_3.15 cmpi.l #$a000,d1
bgt FI_3.07
move.l a0,IRJ_ImaginePPTHhunk
bra.s FI_3.07
;-----------
FI_4 move.l #4,IRJ_ImagineVersion
movea.l d0,a0
FI_4.05 move.l -4(a0),d1
cmpi.l #$6800,d1
bgt.s FI_4.10
FI_4.07 move.l (a0),d1
beq FI.40 ;done
asl.l #2,d1
movea.l d1,a0
bra.s FI_4.05
FI_4.10 cmpi.l #$9000,d1
bgt.s FI_4.15
move.l a0,IRJ_ImagineA4Base
bra.s FI_4.07
FI_4.15 cmpi.l #$f000,d1
bgt.s FI_4.07
move.l a0,IRJ_ImaginePPTHhunk
bra.s FI_4.07
;-----------
FI_5 move.l #5,IRJ_ImagineVersion
movea.l d0,a0
FI_5.05 move.l -4(a0),d1
cmpi.l #$6a00,d1
bgt.s FI_5.10
FI_5.07 move.l (a0),d1
beq FI.40 ;done
asl.l #2,d1
movea.l d1,a0
bra.s FI_5.05
FI_5.10 cmpi.l #$9000,d1
bgt.s FI_5.15
move.l a0,IRJ_ImagineA4Base
bra.s FI_5.07
FI_5.15 cmpi.l #$a0000,d1
bgt.s FI_5.07
cmpi.l #$ca00,d1
blt.s FI_5.07
move.l a0,IRJ_ImaginePPTHhunk
bra.s FI_5.07
;-----------
FI.99 move.l (sp)+,d0
bra.s FI.45
;---------------------------------------------------
FI.40 move.l a1,IRJ_ImagineCodeBase
addi.l #4,IRJ_ImagineA4Base
addi.l #4,IRJ_ImaginePPTHhunk
move.l (sp)+,IRJ_ImagineTask
FI.45 movea.l a2,a0
jsr _LVOUnlockIBase(a6)
movea.l Intuilib,a1
movea.l _AbsExecBase,a6
jsr _LVOCloseLibrary(a6)
rts
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
PatchImagine2
movea.l d1,a0
cmpi.b #$00,14(a0) ;,0
bne notamatch
cmpi.l #$496d6167,(a0) ;'Imag'
bne notamatch
cmpi.l #$696e652e,4(a0) ;'ine.'
bne notamatch
cmpi.l #$636f6e66,8(a0) ;'conf'
bne notamatch
cmpi.w #$6967,12(a0) ;'ig'
bne notamatch
movea.l #-30,a0
movea.l DOSlib,a1
movem.l d0-d1/a6,-(sp)
move.l FailSafe_orig,d0
movea.l _AbsExecBase,a6
jsr _LVOSetFunction(a6)
suba.l a1,a1
jsr _LVOFindTask(a6)
movea.l d0,a1
move.l a1,-(sp) ;waiting on IRJ_ImagineTask when ready, so fill it last
move.l pr_CLI(a1),d0
beq.s PI2.20
asl.l #2,d0 ;Imagine from CLI
movea.l d0,a1
move.l cli_Module(a1),d0
bra.s PI2.25
PI2.20 move.l pr_SegList(a1),d0 ;Imagine from WB
asl.l #2,d0
movea.l d0,a0
move.l 12(a0),d0
PI2.25 asl.l #2,d0
movea.l d0,a0
PI2.30 move.l -4(a0),d1 ;hunk size
cmpi.l #$b8000,d1
bgt.s PI2.35
move.l (a0),d1
beq PI2.99 ;done - no find code hunk
asl.l #2,d1
movea.l d1,a0
bra.s PI2.30
PI2.35 adda.w #4,a0
movea.l a0,a1 ;IRJ_ImagineCodeBase
adda.l d1,a0
suba.w #8,a0
move.l a0,IRJ_ImagineCodeEnd
cmpi.l #$bb000,d1
blt.s PI2_3 ;3.0
cmpi.l #$e6000,d1
blt.s PI2_4 ;4.0
bra PI2_5 ;5.0
;---------------------------------------------------
PI2_3 move.l #3,IRJ_ImagineVersion
movea.l d0,a0
PI2_3.05 move.l -4(a0),d1
cmpi.l #$7000,d1
bgt.s PI2_3.10
PI2_3.07 move.l (a0),d1
beq PI2.40 ;done
asl.l #2,d1
movea.l d1,a0
bra.s PI2_3.05
PI2_3.10 cmpi.l #$9000,d1
bgt.s PI2_3.15
move.l a0,IRJ_ImagineA4Base
bra.s PI2_3.07
PI2_3.15 cmpi.l #$a000,d1
bgt PI2_3.07
move.l a0,IRJ_ImaginePPTHhunk
bra.s PI2_3.07
;-----------
PI2_4 move.l #4,IRJ_ImagineVersion
movea.l d0,a0
PI2_4.05 move.l -4(a0),d1
cmpi.l #$6800,d1
bgt.s PI2_4.10
PI2_4.07 move.l (a0),d1
beq PI2.40 ;done
asl.l #2,d1
movea.l d1,a0
bra.s PI2_4.05
PI2_4.10 cmpi.l #$9000,d1
bgt.s PI2_4.15
move.l a0,IRJ_ImagineA4Base
bra.s PI2_4.07
PI2_4.15 cmpi.l #$f000,d1
bgt.s PI2_4.07
move.l a0,IRJ_ImaginePPTHhunk
bra.s PI2_4.07
;-----------
PI2_5 move.l #5,IRJ_ImagineVersion
movea.l d0,a0
PI2_5.05 move.l -4(a0),d1
cmpi.l #$6a00,d1
bgt.s PI2_5.10
PI2_5.07 move.l (a0),d1
beq PI2.40 ;done
asl.l #2,d1
movea.l d1,a0
bra.s PI2_5.05
PI2_5.10 cmpi.l #$9000,d1
bgt.s PI2_5.15
move.l a0,IRJ_ImagineA4Base
bra.s PI2_5.07
PI2_5.15 cmpi.l #$a0000,d1
bgt.s PI2_5.07
cmpi.l #$ca00,d1
blt.s PI2_5.07
move.l a0,IRJ_ImaginePPTHhunk
bra.s PI2_5.07
;-----------
PI2.99 move.l (sp)+,d0
movem.l (sp)+,d0-d1/a6
bra.s notamatch
;---------------------------------------------------
PI2.40 move.l a1,IRJ_ImagineCodeBase
addi.l #4,IRJ_ImagineA4Base
addi.l #4,IRJ_ImaginePPTHhunk
move.l (sp)+,IRJ_ImagineTask
bsr PatchImagine
movem.l (sp)+,d0-d1/a6
notamatch:
dc.w $4ef9 ;JMP
FailSafe_orig:
dc.l FailSafe
FailSafe move.l #0,d0 ;this will be patched to go to origional LVOOpen
nop
rts
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
PatchImagine
tst.l IRJ_ImagineTask
beq PI.99
;-----------
movea.l IRJ_ImaginePPTHhunk,a0
PI.05 cmpi.l #'PPTH',(a0)
beq.s PI.06
adda.w #1,a0
bra.s PI.05
PI.06 move.l a0,d0
movea.l IRJ_ImagineCodeBase,a0
PI.07 cmp.l (a0),d0
beq.s PI.09
PI.08 adda.w #1,a0
bra.s PI.07
PI.09 cmpi.w #$4879,-2(a0) ;PEA
bne.s PI.08
move.w 20(a0),d0
move.w d0,IM_RENDER40
add.w d0,IM_RENDER
add.w d0,IM_FILEformat
add.w d0,IM_WIDTH
add.w d0,IM_HEIGHT
add.w d0,IM_XASPECT
add.w d0,IM_YASPECT
add.w d0,IM_VIEWmode
add.w d0,IM_SUBPROJECTpixdir
add.w d0,IM_SUBPROJECTanimdir
;-----------
movea.l IRJ_ImagineCodeBase,a0
movea.l IRJ_ImagineCodeEnd,a1
PI.10 cmpi.l #'Part',(a0)
beq.s PI.12
PI.11 adda.w #1,a0
cmpa a0,a1
bne.s PI.10
bra PI.99 ;couldn't find 'Particle Filename'
PI.12 cmpi.l #' Fil',8(a0)
bne.s PI.11
suba.w #10,a0
movea.l (a0),a1
clr.l d0
move.w -8(a0),d0
subi.w #$6c,d0
move.w d0,IM_PROJECTdir
add.w d0,IM_PROJECTfile
add.w d0,IM_PROJECToutput
addi.w #12,d0
move.w d0,IM_OBJECTdir
add.w d0,IM_OBJECTfile
add.w d0,IM_OBJECToutput
addi.w #12,d0
move.w d0,IM_CONVERTIFFdir
add.w d0,IM_CONVERTIFFfile
add.w d0,IM_CONVERTIFFoutput
addi.w #12,d0
move.w d0,IM_BRUSHMAPSdir
add.w d0,IM_BRUSHMAPSfile
add.w d0,IM_BRUSHMAPSoutput
addi.w #12,d0
move.w d0,IM_TEXTURESdir
add.w d0,IM_TEXTURESfile
add.w d0,IM_TEXTURESoutput
addi.w #12,d0
move.w d0,IM_EFFECTSdir
add.w d0,IM_EFFECTSfile
add.w d0,IM_EFFECTSoutput
addi.w #12,d0
move.w d0,IM_SUBPROJECTdir
add.w d0,IM_SUBPROJECTfile
add.w d0,IM_SUBPROJECToutput
addi.w #12,d0
move.w d0,IM_PREFSdir
add.w d0,IM_PREFSfile
add.w d0,IM_PREFSoutput
addi.w #12,d0
move.w d0,IM_ATTRIBSdir
add.w d0,IM_ATTRIBSfile
add.w d0,IM_ATTRIBSoutput
addi.w #12,d0
move.w d0,IM_PARTICALSdir
add.w d0,IM_PARTICALSfile
add.w d0,IM_PARTICALSoutput
addi.w #24,d0
move.w d0,IM_PALETTEdir
add.w d0,IM_PALETTEfile
add.w d0,IM_PALETTEoutput
addi.w #12,d0
move.w d0,IM_BROWSEdir
add.w d0,IM_BROWSEfile
add.w d0,IM_BROWSEoutput
addi.w #12,d0
move.w d0,IM_REXXdir
add.w d0,IM_REXXfile
add.w d0,IM_REXXoutput
cmpi.l #5,IRJ_ImagineVersion
beq.s PI.14
cmpi.l #4,IRJ_ImagineVersion
beq.s PI.13
move.w #0,IM_RENDER40
PI.13 move.w #0,IM_REXXdir
move.w #0,IM_REXXfile
move.w #0,IM_REXXoutput
PI.14 adda.w #1,a1
cmpi.w #$4eb9,(a1)
bne.s PI.14
move.l 2(a1),IRJrequester_orig
move.l #IRJrequester,2(a1) ;gotta unpatch this
move.l a1,IRJtemp_1 ; when we quit
;-----------
movea.l IRJ_ImagineCodeBase,a0
adda.l #$88000,a0
movea.l IRJ_ImagineCodeEnd,a1
PI.20 cmpi.l #$43ef0010,(a0) ;LEA $10(A7),A1
beq.s PI.21
adda.w #1,a0 ; lea $10(A7),A1
cmpa a0,a1 ; move.b (A0)+,(A1)+
bne.s PI.20 ; bne.b *-$02
bra PI.99 ;4d6 pea *-$127a ;'/objects',0,0 $487aed84 / pea -$127C(PC) ;'/objects',0,0
PI.21 adda.w #$1c,a0 ; a pea $14(a7) $486f0014 / pea $14(A7)
move.l a0,IRJtemp_2 ; e jsr $0b97e8 $4eb900620050 / jsr $0B97E8
; e4 addq.w #8,a7 $504f / addq.w #8,A7
move.w #$4eb9,(a0) ;jsr ; 6 lea $10(a7),a0 $41ef0010 / lea $10(A7),A0
move.l 2(a0),IRJtemp_3
move.l #CREATEDIRS,2(a0) ;** a move.l a0,d1 JSR CREATEDIRS $2208 / move.l A0,D1
move.w 6(a0),IRJtemp_4
move.w #$4e71,6(a0) ;nop ; c jsr -$78(a6) ************** $4eaeff88 / jsr _LVOCreateDir(a6)
move.l 16(a0),IRJtemp_5
move.l #$4e714e71,16(a0) ;nop nop ; f0 move.l d0,d7 NOP $2e00 / move.l D0,D7
; 2 tst.l d7 $4a87 / tst.l D7
; 4 beq *+$fc $670000fa / beq.w *+$FC
; 8 move.l d7,d1 $2207 / move.l D7,D1
; a jsr -$5a(a6) NOP NOP $4eaeffa6 / jsr _LVOUnlock(a6)
;-----------
movea.l IRJ_ImagineCodeBase,a0
adda.l #$8f000,a0
movea.l IRJ_ImagineCodeEnd,a1
PI.25 cmpi.l #$12d866fc,(a0) ;MOVE.B (A0)+,(A1)+
beq.s PI.27
PI.26 adda.w #1,a0
cmpa a0,a1
bne.s PI.25
bra PI.99
PI.27 cmpi.l #$12d866fc,12(a0) ;MOVE.B (A0)+,(A1)+
bne.s PI.26
move.l a0,IRJtemp_6 ;disable copying over my init SUBPROJECT pix/anim dirs
move.l #$4e714e71,(a0) ;was $12d866fc
move.l #$4e714e71,12(a0) ;was $12d866fc
;-----------
movea.l IRJ_ImagineCodeBase,a0
movea.l IRJ_ImagineCodeEnd,a1
PI.30 cmpi.l #'No p',(a0)
beq.s PI.31
adda.w #1,a0
cmpa a0,a1
bne.s PI.30
PI.31 suba.w #1,a0
cmpi.l #$42a761ff,(a0)
bne.s PI.31
move.l a0,IRJtemp_7 ;clr.l -(a7)
move.w (a0),IRJtemp_8
move.w #$4eb9,(a0)
move.l 2(a0),IRJtemp_9
move.l #QUITTING_IMAGINE,2(a0)
move.w 6(a0),IRJtemp_10
move.w #$4e71,6(a0)
PI.32 adda.w #1,a0
cmpi.l #$48e70316,(a0) ;movem.l d6-d7/a3/a5-a6,-(a7)
bne.s PI.32
move.l a0,QUITTING_dothisfirst+2
move.w #$4eb9,QUITTING_dothisfirst
;-----------
PI.99 rts ;UNKNOWN or not loaded
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
UnPatchImagine
tst.l IRJ_ImagineTask
beq.s UPI.99
tst.l IRJ_ImagineCodeBase
beq.s UPI.99
move.l IRJtemp_1,a1
move.l IRJrequester_orig,2(a1)
move.l IRJtemp_2,a0
move.w #$2208,(a0) ;MOVE.L A0,D1
move.l IRJtemp_3,2(a0)
move.w IRJtemp_4,6(a0)
move.l IRJtemp_5,16(a0)
move.l IRJtemp_6,a0
move.l #$12d866fc,(a0)
move.l #$12d866fc,12(a0)
move.l IRJtemp_7,a0
move.w IRJtemp_8,(a0)
move.l IRJtemp_9,2(a0)
move.w IRJtemp_10,6(a0)
nop
bra FreeIRJbuffers
UPI.99 rts ;UNKNOWN or not loaded
;---------------------------------------------------------------------------------------------------
FreeIRJbuffers
tst.l IRJ_ImagineTask
beq FRJ.05 ;imagine wasn't ever found
movea.l IRJ_ImagineA4Base,a4
movea.l IRJ_OBJECTdir,a3 ;IRJobject->IMobject
move.w IM_OBJECTdir,d4
move.l (a4,d4.w),d0
bsr CopyString
movea.l IRJ_OBJECTfile,a3
move.w IM_OBJECTfile,d4
move.l (a4,d4.w),d0
bsr CopyString
movea.l IRJ_OBJECTdir,a3 ;IRJobject->IMbrowse
move.w IM_BROWSEdir,d4
move.l (a4,d4.w),d0
bsr CopyString
movea.l IRJ_OBJECTfile,a3
move.w IM_BROWSEfile,d4
move.l (a4,d4.w),d0
bsr CopyString
movea.l IM_BRUSHMAPSdir,a3 ;IMbrushmaps->IMconvertiff
move.w IM_CONVERTIFFdir,d4
move.l (a4,d4.w),d0
bsr CopyString
movea.l IM_BRUSHMAPSfile,a3
move.w IM_CONVERTIFFfile,d4
move.l (a4,d4.w),d0
bsr CopyString
movea.l IM_BRUSHMAPSdir,a3 ;IMbrushmaps->IMpalette
move.w IM_PALETTEdir,d4
move.l (a4,d4.w),d0
bsr CopyString
movea.l IM_BRUSHMAPSfile,a3
move.w IM_PALETTEfile,d4
move.l (a4,d4.w),d0
bsr CopyString
FRJ.05 rts
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
PrepDirectoryTableStruct
movea.l _AbsExecBase,a6
bsr PDTSsub1 ;IRJ_OBJECTdir IRJ_OBJECTfile
move.l d0,IRJ_OBJECTdir ;IRJ_DXFdir IRJ_DXFfile
beq PDTS.error ;IRJ_FORMdir IRJ_FORMfile
bsr PDTSsub2 ;IRJ_CYCLEdir IRJ_CYCLEfile
move.l d0,IRJ_OBJECTfile ;IRJ_SPLINEdir IRJ_SPLINEfile
beq PDTS.error
bsr PDTSsub1
move.l d0,IRJ_DXFdir
beq PDTS.error
bsr PDTSsub2
move.l d0,IRJ_DXFfile
beq PDTS.error
bsr PDTSsub1
move.l d0,IRJ_FORMdir
beq PDTS.error
bsr PDTSsub2
move.l d0,IRJ_FORMfile
beq PDTS.error
bsr PDTSsub1
move.l d0,IRJ_CYCLEdir
beq PDTS.error
bsr PDTSsub2
move.l d0,IRJ_CYCLEfile
beq PDTS.error
bsr PDTSsub1
move.l d0,IRJ_SPLINEdir
beq PDTS.error
bsr PDTSsub2
move.l d0,IRJ_SPLINEfile
beq PDTS.error
bsr PDTSsub1
move.l d0,IRJ_PIXdir
beq PDTS.error
bsr PDTSsub1
move.l d0,IRJ_ANIMdir
beq PDTS.error
bsr PDTSsub1
move.l d0,IRJ_tempdir
beq PDTS.error
lea PROJECTdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_PROJECTdir_configdefault
beq PDTS.error
lea PROJECTfileconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_PROJECTfile_configdefault
beq PDTS.error
lea SUBPROJECTfileconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_SUBPROJECTfile_configdefault
beq PDTS.error
lea PIXdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_PIXdir_configdefault
beq PDTS.error
lea ANIMdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_ANIMdir_configdefault
beq PDTS.error
lea PREFSfileconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_PREFSfile_configdefault
beq PDTS.error
lea OBJECTdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_OBJECTdir_configdefault
beq PDTS.error
lea DXFdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_DXFdir_configdefault
beq PDTS.error
lea FORMdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_FORMdir_configdefault
beq PDTS.error
lea CYCLEdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_CYCLEdir_configdefault
beq PDTS.error
lea SPLINEdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_SPLINEdir_configdefault
beq PDTS.error
lea BRUSHMAPSdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_BRUSHMAPSdir_configdefault
beq PDTS.error
lea ATTRIBSdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_ATTRIBSdir_configdefault
beq PDTS.error
lea TEXTURESdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_TEXTURESdir_configdefault
beq PDTS.error
lea EFFECTSdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_EFFECTSdir_configdefault
beq PDTS.error
lea PARTICALSdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_PARTICALSdir_configdefault
beq PDTS.error
lea REXXdirconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_REXXdir_configdefault
beq PDTS.error
lea PROJECTpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_PROJECTpat_configdefault
beq PDTS.error
lea NEWSUBPROJECTpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_NEWSUBPROJECTpat_configdefault
beq PDTS.error
lea OPENSUBPROJECTpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_OPENSUBPROJECTpat_configdefault
beq PDTS.error
lea PREFSpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_PREFSpat_configdefault
beq PDTS.error
lea OBJECTpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_OBJECTpat_configdefault
beq PDTS.error
lea DXFpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_DXFpat_configdefault
beq PDTS.error
lea FORMpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_FORMpat_configdefault
beq PDTS.error
lea CYCLEpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_CYCLEpat_configdefault
beq PDTS.error
lea SPLINEpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_SPLINEpat_configdefault
beq PDTS.error
lea BRUSHMAPSpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_BRUSHMAPSpat_configdefault
beq PDTS.error
lea ATTRIBSpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_ATTRIBSpat_configdefault
beq PDTS.error
lea TEXTURESpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_TEXTURESpat_configdefault
beq PDTS.error
lea EFFECTSpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_EFFECTSpat_configdefault
beq PDTS.error
lea PARTICALSpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_PARTICALSpat_configdefault
beq PDTS.error
lea REXXpatconfigdefault,a3
bsr PDTSsub3
move.l d0,IRJ_REXXpat_configdefault
beq PDTS.error
move.l #DIRECTORYTABLESTRUCT,d0 ;no error
rts
PDTS.error bsr FreeDirectoryTableStuff
move.l #0,d0 ;memory error
rts
PDTSsub1 move.l #100,d0 ;dir
move.l #MEMF_CLEAR,d1
jsr _LVOAllocMem(a6)
rts
PDTSsub2 move.l #30,d0 ;file
move.l #MEMF_CLEAR,d1
jsr _LVOAllocMem(a6)
rts
PDTSsub3 movea.l a3,a1
bsr SizeOfString
movea.l a1,a3
move.l #MEMF_CLEAR,d1
jsr _LVOAllocMem(a6)
move.l d0,d2
beq.s PDTSs3.01
bsr CopyString
move.l d2,d0
PDTSs3.01 rts
;---------------------------------------------------------------------------------------------------
FreeDirectoryTableStuff
movem.l a3/a6,-(sp)
movea.l _AbsExecBase,a6
move.l IRJ_OBJECTdir,d0
bsr FDTSsub1
move.l IRJ_OBJECTfile,d0
bsr FDTSsub2
move.l IRJ_DXFdir,d0
bsr FDTSsub1
move.l IRJ_DXFfile,d0
bsr FDTSsub2
move.l IRJ_FORMdir,d0
bsr FDTSsub1
move.l IRJ_FORMfile,d0
bsr FDTSsub2
move.l IRJ_CYCLEdir,d0
bsr FDTSsub1
move.l IRJ_CYCLEfile,d0
bsr FDTSsub2
move.l IRJ_SPLINEdir,d0
bsr FDTSsub1
move.l IRJ_SPLINEfile,d0
bsr FDTSsub2
move.l IRJ_PIXdir,d0
bsr FDTSsub1
move.l IRJ_ANIMdir,d0
bsr FDTSsub1
move.l IRJ_tempdir,d0
bsr FDTSsub1
move.l IRJ_PROJECTdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_PROJECTfile_configdefault,d0
bsr FDTSsub3
move.l IRJ_SUBPROJECTfile_configdefault,d0
bsr FDTSsub3
move.l IRJ_PIXdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_ANIMdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_PREFSfile_configdefault,d0
bsr FDTSsub3
move.l IRJ_OBJECTdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_DXFdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_FORMdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_CYCLEdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_SPLINEdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_BRUSHMAPSdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_ATTRIBSdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_TEXTURESdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_EFFECTSdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_PARTICALSdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_REXXdir_configdefault,d0
bsr FDTSsub3
move.l IRJ_PROJECTpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_NEWSUBPROJECTpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_OPENSUBPROJECTpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_PREFSpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_OBJECTpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_DXFpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_FORMpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_CYCLEpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_SPLINEpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_BRUSHMAPSpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_ATTRIBSpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_TEXTURESpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_EFFECTSpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_PARTICALSpat_configdefault,d0
bsr FDTSsub3
move.l IRJ_REXXpat_configdefault,d0
bsr FDTSsub3
movem.l (sp)+,a3/a6
rts
FDTSsub1 tst.l d0
beq.s FDTSs1.01
movea.l d0,a1
move.l #100,d0 ;dir
jsr _LVOFreeMem(a6)
FDTSs1.01 rts
FDTSsub2 tst.l d0
beq.s FDTSs2.01
movea.l d0,a1
move.l #30,d0 ;file
jsr _LVOFreeMem(a6)
FDTSs2.01 rts
FDTSsub3 tst.l d0
beq.s FDTSs3.01
movea.l d0,a3
movea.l d0,a1
bsr SizeOfString
jsr _LVOFreeMem(a6)
FDTSs3.01 rts
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
IRJwritethis
movem.l d0-d3/a0-a1/a3/a6,-(sp)
tst.l WBreturnMsg
bne.s WT.05
movea.l DOSlib,a6
jsr _LVOOutput(a6)
move.l d0,d1
beq.s WT.05
move.l a3,d2
bsr SizeOfString
move.l d0,d3
jsr _LVOWrite(a6)
WT.05 movem.l (sp)+,d0-d3/a0-a1/a3/a6
rts
;---------------------------------------------------------------------------------------------------
;in:a3 out:d0.l
SizeOfString
clr.l d0
SOS.05 addi.w #1,d0
tst.b (a3)+
bne.s SOS.05
rts
;---------------------------------------------------------------------------------------------------
MoveString
CopyString movea.l d0,a0
CS.05 move.b (a3)+,d0
move.b d0,(a0)+
bne.s CS.05
rts
;---------------------------------------------------------------------------------------------------
CloseLibs movea.l _AbsExecBase,a6
movea.l DOSlib,a1
jsr _LVOCloseLibrary(a6) ;close dos.library
movea.l ASLlib,a1
jsr _LVOCloseLibrary(a6) ;close asl.library
rts
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
IRJrequester
movem.l d1-d7/a0-a3/a6,-(sp)
movea.l ASLlib,a6
move.l 52(sp),IRJaslfr_imaginewindow
move.l 60(sp),IRJaslfr_title ;title
move.l 64(sp),d7 ;file
move.l 68(sp),d6 ;dir
movea.l IRJaslfr_title,a0
cmpi.b #'!',(a0) ;">!< Delete File !" in detail.c:
beq IRJrequester_skip
move.w IM_PROJECTdir,d4
cmp.l (a4,d4.w),d6
beq PROJECTREQUESTER
move.w IM_SUBPROJECTdir,d4
cmp.l (a4,d4.w),d6
beq SUBPROJECTREQUESTER
move.w IM_PREFSdir,d4
cmp.l (a4,d4.w),d6
beq PREFSREQUESTER
move.w IM_CONVERTIFFdir,d4
cmp.l (a4,d4.w),d6
beq CONVERTIFFREQUESTER
move.w IM_PALETTEdir,d4
cmp.l (a4,d4.w),d6
beq PALETTEREQUESTER
move.w IM_PARTICALSdir,d4
cmp.l (a4,d4.w),d6
beq PARTICALSREQUESTER
move.w IM_EFFECTSdir,d4
cmp.l (a4,d4.w),d6
beq EFFECTSREQUESTER
move.w IM_TEXTURESdir,d4
cmp.l (a4,d4.w),d6
beq TEXTUREREQUESTER
move.w IM_ATTRIBSdir,d4
cmp.l (a4,d4.w),d6
beq ATTRIBSREQUESTER
move.w IM_BRUSHMAPSdir,d4
cmp.l (a4,d4.w),d6
beq BRUSHMAPREQUESTER
move.w IM_BROWSEdir,d4
cmp.l (a4,d4.w),d6
beq BROWSEREQUESTER
move.w IM_OBJECTdir,d4
cmp.l (a4,d4.w),d6
beq OBJECTREQUESTER
cmpi.l #5,IRJ_ImagineVersion
bne.s IRJrequester_skip
move.w IM_REXXdir,d4
cmp.l (a4,d4.w),d6 ;is imaginerexx?, then test
beq REXXREQUESTER
IRJrequester_skip:
movem.l (sp)+,d1-d7/a0-a3/a6
dc.w $4ef9 ;JMP
IRJrequester_orig:
dc.l IRJrequester ;this gets overwritten by PatchImagine
nop
nop
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
PARTICALSREQUESTER
tst.l IRJ_PARTICALSdir_configdefault+4 ;configflag
beq.s PAR.05 ;nope, leave it
movea.l IRJ_PARTICALSdir_configdefault,a1
movea.l d6,a0
bsr EXPANDconfigdefault
PAR.05 move.l IRJ_PARTICALSpat_configdefault,d5
move.w IM_PARTICALSoutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile ;output = IM_PARTICALSoutput(a4)
tst.l d0
beq.s PAR_DONE ;cancel/error
bsr SplitDirFile
move.l #0,IRJ_PARTICALSdir_configdefault+4
moveq #1,d0
;-----------
PAR_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
TEXTUREREQUESTER
tst.l IRJ_TEXTURESdir_configdefault+4 ;configflag
beq.s TEX.05 ;nope, leave it
movea.l IRJ_TEXTURESdir_configdefault,a1
movea.l d6,a0
bsr EXPANDconfigdefault
TEX.05 move.l IRJ_TEXTURESpat_configdefault,d5
move.w IM_TEXTURESoutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile ;output = IM_TEXTURESoutput(a4)
tst.l d0
bne.s TEX.10
movea.l d7,a2 ;file
move.b #0,(a2)
bra.s TEX_DONE ;cancel/error
TEX.10 movea.l d4,a2 ;_output
TEX.15 tst.b (a2)+ ;if exists, chop off '.itx'
bne.s TEX.15
cmpi.l #'.itx',-5(a2)
bne.s TEX.20
move.b #0,-5(a2)
TEX.20 bsr SplitDirFile
move.l #0,IRJ_TEXTURESdir_configdefault+4
moveq #1,d0
;-----------
TEX_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
EFFECTSREQUESTER
tst.l IRJ_EFFECTSdir_configdefault+4 ;configflag
beq.s EFX.05 ;nope, leave it
movea.l IRJ_EFFECTSdir_configdefault,a1
movea.l d6,a0
bsr EXPANDconfigdefault
EFX.05 move.l IRJ_EFFECTSpat_configdefault,d5
move.w IM_EFFECTSoutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile ;output = IM_EFFECTSoutput(a4)
tst.l d0
beq.s EFX_DONE ;cancel/error
movea.l d4,a2 ;_output
EFX.10 tst.b (a2)+ ;if exists, chop off '.ifx'
bne.s EFX.10
cmpi.l #'.ifx',-5(a2)
bne.s EFX.15
move.b #0,-5(a2)
EFX.15 bsr SplitDirFile
move.l #0,IRJ_EFFECTSdir_configdefault+4
moveq #1,d0
;-----------
EFX_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
ATTRIBSREQUESTER
tst.l IRJ_ATTRIBSdir_configdefault+4 ;configflag
beq.s ATR.05 ;nope, leave it
movea.l IRJ_ATTRIBSdir_configdefault,a1
movea.l d6,a0
bsr EXPANDconfigdefault
ATR.05 move.l IRJ_ATTRIBSpat_configdefault,d5
move.w IM_ATTRIBSoutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile ;output = IM_ATTRIBSoutput(a4)
tst.l d0
beq.s ATR_DONE ;cancel/error
bsr SplitDirFile
move.l #0,IRJ_ATTRIBSdir_configdefault+4
moveq #1,d0
;-----------
ATR_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
CONVERTIFFREQUESTER
tst.l IRJ_BRUSHMAPSdir_configdefault+4 ;configflag
beq.s IFF.05 ;nope, leave it
movea.l IRJ_BRUSHMAPSdir_configdefault,a1
move.w IM_BRUSHMAPSdir,d4
movea.l (a4,d4.w),a0
bsr EXPANDconfigdefault
IFF.05 move.w IM_BRUSHMAPSfile,d4
move.l (a4,d4.w),d7
move.w IM_BRUSHMAPSdir,d4
move.l (a4,d4.w),d6
move.l IRJ_BRUSHMAPSpat_configdefault,d5
move.w IM_CONVERTIFFoutput,d4
move.l (a4,d4.w),d4 ;convertiff
bsr GetDirFile
tst.l d0
beq.s IFF_DONE ;cancel/error
bsr SplitDirFile
movea.l d4,a3 ;copy IM_CONVERTIFFoutput to IM_BRUSHMAPSoutput
move.w IM_BRUSHMAPSoutput,d4
move.l (a4,d4.w),d0
bsr CopyString
move.l #0,IRJ_BRUSHMAPSdir_configdefault+4
moveq #1,d0
;-----------
IFF_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
PALETTEREQUESTER
tst.l IRJ_BRUSHMAPSdir_configdefault+4 ;configflag
beq.s PAL.05 ;nope, leave it
movea.l IRJ_BRUSHMAPSdir_configdefault,a1
move.w IM_BRUSHMAPSdir,d4
movea.l (a4,d4.w),a0
bsr EXPANDconfigdefault
PAL.05 move.w IM_BRUSHMAPSfile,d4
move.l (a4,d4.w),d7
move.w IM_BRUSHMAPSdir,d4
move.l (a4,d4.w),d6
move.l IRJ_BRUSHMAPSpat_configdefault,d5
move.w IM_PALETTEoutput,d4
move.l (a4,d4.w),d4 ;generate with loaded palette
bsr GetDirFile
tst.l d0
beq.s PAL_DONE ;cancel/error
bsr SplitDirFile
movea.l d4,a3 ;copy IM_PALETTEoutput to IM_BRUSHMAPSoutput
move.w IM_BRUSHMAPSoutput,d4
move.l (a4,d4.w),d0
bsr CopyString
move.l #0,IRJ_BRUSHMAPSdir_configdefault+4
moveq #1,d0
;-----------
PAL_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
BRUSHMAPREQUESTER
tst.l IRJ_BRUSHMAPSdir_configdefault+4 ;configflag
beq.s BRU.05 ;nope, leave it
movea.l IRJ_BRUSHMAPSdir_configdefault,a1
movea.l d6,a0
bsr EXPANDconfigdefault
BRU.05 move.l IRJ_BRUSHMAPSpat_configdefault,d5
move.w IM_BRUSHMAPSoutput,d4
move.l (a4,d4.w),d4 ;applique/addbrushmap
bsr GetDirFile
tst.l d0
beq.s BRU_DONE ;cancel/error
bsr SplitDirFile
move.l #0,IRJ_BRUSHMAPSdir_configdefault+4
moveq #1,d0
;-----------
BRU_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
PREFSREQUESTER
tst.l IRJ_PREFSfile_configdefault+4
bne.s PRF.05 ;ok, stick _configdef in there
move.w IM_PREFSoutput,d4
movea.l (a4,d4.w),a1
tst.b (a1)
bne.s PRF.15
PRF.05 move.l IRJ_PREFSfile_configdefault,d1
move.l d1,d6 ;dir
movea.l DOSlib,a6
jsr _LVOFilePart(a6)
movea.l ASLlib,a6
move.l d0,d7 ;file
cmp.l d6,d7
beq.s PRF.10 ;dir only, file=null
movea.l d0,a3
cmpi.b #':',-1(a3) ;- can still cause trouble. ie ram:test.cfg
bne.s PRF.08
movea.l a3,a0
lea IRJ_tempfilespace,a1
move.l a1,d7
PRF.06 move.b (a0)+,(a1)+
bne.s PRF.06
adda.w #1,a3
PRF.08 move.b -1(a3),IRJtemp_11 ;temp
move.b #0,-1(a3) ;temp
move.l IRJ_PREFSpat_configdefault,d5
move.w IM_PREFSoutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile
move.b IRJtemp_11,-1(a3) ;restore temp
bra.s PRF.20
;-----------
PRF.10 move.l #nullstring,d6
PRF.15 move.l IRJ_PREFSpat_configdefault,d5
move.w IM_PREFSoutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile
;-----------
PRF.20 tst.l d0
beq PRF_DONE ;cancel/error
move.w IM_PREFSfile,d7
move.l (a4,d7.w),d7
move.w IM_PREFSdir,d6
move.l (a4,d6.w),d6
bsr SplitDirFile
movea.l IRJaslfr_title,a0
cmpi.b #'S',13(a0) ;"Config File (>S<ave)"
beq.s PRF.25
movea.l d4,a1 ;_output
move.l #DIRECTORYTABLESTRUCT,d5
move.l #1,DTSconfigflag ;flag new configdefaults as updated - same flag as when updated by another IRJ
bsr CONFIG_read
PRF.25 move.l #0,IRJ_PREFSfile_configdefault+4 ;clear this flag
moveq #1,d0
bra.s PRF_DONE
;-----------
PRF_unknown move.l #0,d0
PRF_DONE move.l d0,d1
movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
PROJECTREQUESTER
movea.l IRJaslfr_title,a0
cmpi.b #'N',14(a0) ;"Project Name (>N<ew)"
beq.s NEWPROJECT
bra OPENPROJECT
;---------------------------------------------------
NEWPROJECT
tst.l IRJ_PROJECTdir_configdefault+4
beq.s NPr.10
NPr.05 movea.l IRJ_PROJECTdir_configdefault,a0
bra.s NPr.15
NPr.10 movea.l d6,a0
tst.b (a0)
beq.s NPr.05
NPr.15 move.l a0,d6
tst.l IRJ_PROJECTfile_configdefault+4
beq.s NPr.25
NPr.20 movea.l IRJ_PROJECTfile_configdefault,a0
bra.s NPr.30
NPr.25 movea.l d7,a0
tst.b (a0)
beq.s NPr.20
lea nullstring,a0 ;clear file field
NPr.30 move.l a0,d7
move.l IRJ_PROJECTpat_configdefault,d5
move.w IM_PROJECToutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile
tst.l d0
beq PR_DONE ;cancel/error - should maybe have not cleared the IRJxxx_configflags unless this succeeds
movea.l d4,a2 ;_output
NPr.35 tst.b (a2)+ ;if exists, chop off '.imp'
bne.s NPr.35
cmpi.l #'.imp',-5(a2)
bne.s NPr.40
move.b #0,-5(a2)
move.w IM_PROJECTfile,d0
movea.l (a4,d0.w),a2 ;not so sure this is necessary, but why take chances
NPr.37 tst.b (a2)+
bne.s NPr.37
cmpi.l #'.imp',-5(a2)
bne.s NPr.40
move.b #0,-5(a2)
NPr.40 move.w IM_PROJECTdir,d6
move.l (a4,d6.w),d6
move.w IM_PROJECTfile,d7
move.l (a4,d7.w),d7
bsr SplitDirFile
bsr INITdirs
move.l #0,IRJ_PROJECTdir_configdefault+4
move.l #0,IRJ_PROJECTfile_configdefault+4
move.l #1,d0 ;signal success
bra PR_DONE
;-----------
OPENPROJECT
tst.l IRJ_PROJECTdir_configdefault+4
beq.s OPr.10
OPr.05 movea.l IRJ_PROJECTdir_configdefault,a0
bra.s OPr.15
OPr.10 movea.l d6,a0
tst.b (a0)
beq.s OPr.05
OPr.15 move.l a0,d6 ;dir
tst.l IRJ_PROJECTfile_configdefault+4
beq.s OPr.25
move.l #0,IRJ_PROJECTfile_configdefault+4
movea.l IRJ_PROJECTfile_configdefault,a0 ;default file
tst.b (a0)
beq.s OPr.25
movea.l d6,a3
move.l IRJ_tempdir,d0
bsr CopyString ;copy from d6 to tempdir
move.l IRJ_tempdir,d1
move.l IRJ_PROJECTfile_configdefault,d2
move.l #100,d3
movea.l DOSlib,a6
jsr _LVOAddPart(a6)
movea.l ASLlib,a6
move.l IRJ_tempdir,d6 ;dir
movea.l d6,a0
OPr.20 tst.b (a0)+
bne.s OPr.20
move.l #'.imp',-1(a0)
move.b #0,3(a0)
OPr.25 move.l #stagingname,d7
move.l IRJ_PROJECTpat_configdefault,d5
move.w IM_PROJECToutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile
tst.l d0
beq PR_DONE ;cancel/error
movea.l d4,a2 ;_output
OPr.30 tst.b (a2)+ ;if exists, chop off '.imp'
bne.s OPr.30
cmpi.l #'.imp',-13(a2) ;don't check to make sure they didn't change staging name
bne.s OPr.35
move.b #0,-13(a2)
OPr.35 move.w IM_PROJECTdir,d6
move.l (a4,d6.w),d6
move.w IM_PROJECTfile,d7
move.l (a4,d7.w),d7
bsr SplitDirFile
bsr INITdirs
move.l #0,IRJ_PROJECTdir_configdefault+4
move.l #1,d0 ;signal success
;-----------
PR_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
SUBPROJECTREQUESTER
cmpi.l #$26,d0
beq NEWSUBPROJECT
cmpi.l #$106,d0
beq OPENSUBPROJECT
;---------------------------------------------------
NEWSUBPROJECT
cmpi.l #3,IRJ_ImagineVersion
beq NSp.005
tst.l IRJ_RENDER40_configdefault+4
beq.s NSp.005
move.w IM_RENDER40,d0
move.b IRJ_RENDER40_configdefault+3,(a4,d0.w)
move.l #0,IRJ_RENDER40_configdefault+4
NSp.005 tst.l IRJ_RENDER_configdefault+4
beq.s NSp.010
move.w IM_RENDER,d0
move.b IRJ_RENDER_configdefault+3,(a4,d0.w)
move.l #0,IRJ_RENDER_configdefault+4
NSp.010 tst.l IRJ_FILEformat_configdefault+4
beq.s NSp.015
move.w IM_FILEformat,d0
move.b IRJ_FILEformat_configdefault+3,(a4,d0.w)
move.l #0,IRJ_FILEformat_configdefault+4
NSp.015 tst.l IRJ_WIDTH_configdefault+4
beq.s NSp.020
move.w IM_WIDTH,d0
move.w IRJ_WIDTH_configdefault+2,(a4,d0.w)
move.l #0,IRJ_WIDTH_configdefault+4
NSp.020 tst.l IRJ_HEIGHT_configdefault+4
beq.s NSp.025
move.w IM_HEIGHT,d0
move.w IRJ_HEIGHT_configdefault+2,(a4,d0.w)
move.l #0,IRJ_HEIGHT_configdefault+4
NSp.025 tst.l IRJ_XASPECT_configdefault+4
beq.s NSp.030
move.w IM_XASPECT,d0
move.w IRJ_XASPECT_configdefault+2,(a4,d0.w)
move.l #0,IRJ_XASPECT_configdefault+4
NSp.030 tst.l IRJ_YASPECT_configdefault+4
beq.s NSp.035
move.w IM_YASPECT,d0
move.w IRJ_YASPECT_configdefault+2,(a4,d0.w)
move.l #0,IRJ_YASPECT_configdefault+4
NSp.035 tst.l IRJ_VIEWmode_configdefault+4
beq.s NSp.040
move.w IM_VIEWmode,d0
move.l IRJ_VIEWmode_configdefault,(a4,d0.w)
move.l #0,IRJ_VIEWmode_configdefault+4
NSp.040 tst.l IRJ_SUBPROJECTfile_configdefault+4
beq.s NSp.050
NSp.045 movea.l IRJ_SUBPROJECTfile_configdefault,a0
bra.s NSp.055
NSp.050 movea.l d7,a0
tst.b (a0)
beq.s NSp.045
lea nullstring,a0 ;clear file field
NSp.055 move.l a0,d7
move.l IRJ_NEWSUBPROJECTpat_configdefault,d5
move.w IM_SUBPROJECToutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile
tst.l d0
beq SPR_DONE ;cancel/error
movea.l d4,a2 ;_output
NSp.060 tst.b (a2)+ ;if exists, chop off '.pix'
bne.s NSp.060
cmpi.l #'.pix',-5(a2)
bne.s NSp.065
move.b #0,-5(a2)
NSp.065 move.l d4,d1 ;_output
movea.l DOSlib,a6
jsr _LVOFilePart(a6)
movea.l ASLlib,a6
movea.l d0,a0
move.w IM_SUBPROJECTfile,d0
movea.l (a4,d0.w),a1 ;IM_SUBPROJECTdir must remain unchanged
NSp.070 move.b (a0)+,(a1)+
bne.s NSp.070
move.w IM_SUBPROJECTpixdir,d4
lea (a4,d4.w),a1 ;Imagine pix directory
movea.l IRJ_PIXdir_configdefault,a0
tst.b (a0)
beq.s NSp.080 ;nope, use ProjName/SubProj (.pix)
NSp.075 move.b (a0)+,(a1)+
bne.s NSp.075
bra.s NSp.090
NSp.080 move.w IM_SUBPROJECToutput,d4
movea.l (a4,d4.w),a0
NSp.085 move.b (a0)+,(a1)+
bne.s NSp.085
move.l #'.pix',-1(a1)
move.b #0,3(a1)
NSp.090 move.w IM_SUBPROJECTanimdir,d4
lea (a4,d4.w),a1 ;Imagine anim directory
movea.l IRJ_ANIMdir_configdefault,a0
tst.b (a0)
beq.s NSp.100 ;nope, use ProjName/SubProj (.anim)
NSp.095 move.b (a0)+,(a1)+
bne.s NSp.095
bra.s NSp.110
NSp.100 move.w IM_SUBPROJECToutput,d4
movea.l (a4,d4.w),a0
NSp.105 move.b (a0)+,(a1)+
bne.s NSp.105
move.l #'.ani',-1(a1)
move.w #$6d00,3(a1) ;'m',0
NSp.110 move.l #0,IRJ_SUBPROJECTfile_configdefault+4
move.l #0,IRJ_PIXdir_configdefault+4
move.l #0,IRJ_ANIMdir_configdefault+4
move.l #1,d0 ;signal success
bra SPR_DONE
;-----------
OPENSUBPROJECT
move.w IM_SUBPROJECTdir,d4
move.l (a4,d4.w),d6
tst.l IRJ_SUBPROJECTfile_configdefault+4
beq.s OSp.010
move.l #0,IRJ_SUBPROJECTfile_configdefault+4
move.l d6,d1 ;dir
move.l IRJ_SUBPROJECTfile_configdefault,a0 ;default file
tst.b (a0)
beq.s OSp.010
move.l a0,d2
move.l #100,d3
movea.l DOSlib,a6
jsr _LVOAddPart(a6)
movea.l ASLlib,a6
movea.l d6,a0
OSp.005 tst.b (a0)+
bne.s OSp.005
cmpi.l #'.pix',-5(a0) ;make sure it doesn't already end with .pix
beq.s OSp.010
move.l #'.pix',-1(a0)
move.b #0,3(a0)
OSp.010 move.l #specsname,d7
move.l IRJ_OPENSUBPROJECTpat_configdefault,d5
move.w IM_SUBPROJECToutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile
move.w IM_SUBPROJECTdir,d4 ;repair the damage done before GDF to SUBPROJECT dir
move.l (a4,d4.w),a2
tst.b (a2)
beq.s OSp.014
OSp.012 tst.b (a2)+
bne.s OSp.012
suba.w #1,a2
OSp.013 move.b -(a2),d4
cmpi.b #'/',d4
bne.s OSp.013
cmpi.l #'.imp',-4(a2)
bne.s OSp.014
move.b #0,(a2)
OSp.014 tst.l d0
beq SPR_DONE ;GDF cancel/error - should maybe have not cleared the IRJxxx_configflags unless this succeeds
move.w IM_SUBPROJECToutput,d4
movea.l (a4,d4.w),a2 ;_output
OSp.015 tst.b (a2)+ ;if exists, chop off '.pix/specs'
bne.s OSp.015
cmpi.l #'.pix',-11(a2) ;don't check to make sure they didn't change staging name
bne.s OSp.020 ;oy - cancel out
move.b #0,-11(a2)
OSp.020 move.w IM_SUBPROJECToutput,d4
move.l (a4,d4.w),d1 ;_output
movea.l DOSlib,a6
jsr _LVOFilePart(a6)
movea.l d0,a0
move.w IM_SUBPROJECTfile,d4
movea.l (a4,d4.w),a1
OSp.025 move.b (a0)+,(a1)+
bne.s OSp.025
move.l #0,IRJ_SUBPROJECTfile_configdefault+4
move.l #1,d0 ;signal success
bra.s SPR_DONE
;-----------
SPR_unknown move.l #0,d0
SPR_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
BROWSEREQUESTER
cmpi.b #$00,d3
beq BRO.05 ;OBJECTinfo
bra BRO.30 ;BACKDROPbrushmap / GLOBALbrushmap
;---------------------------------------------------
BRO.05 tst.l IRJ_OBJECTdir_configdefault+4 ;configflag
beq.s BRO.10 ;nope, leave it
movea.l IRJ_OBJECTdir_configdefault,a1
movea.l IRJ_OBJECTdir,a0
bsr EXPANDconfigdefault
BRO.10 move.l IRJ_OBJECTfile,d7 ;file
move.l IRJ_OBJECTdir,d6 ;dir
move.l IRJ_OBJECTpat_configdefault,d5
move.w IM_OBJECToutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile ;placed in OBJECT_output
tst.l d0
beq BRO_DONE ;cancel/error
move.l IRJ_OBJECTdir,d6 ;dir
move.l IRJ_OBJECTfile,d7 ;file
bsr SplitDirFile
movea.l IRJ_OBJECTdir,a3
move.w IM_BROWSEdir,d4
move.l (a4,d4.w),d0
jsr CopyString
movea.l IRJ_OBJECTfile,a3
move.w IM_BROWSEfile,d4
move.l (a4,d4.w),d0
jsr CopyString
move.w IM_OBJECToutput,d4
movea.l (a4,d4.w),a3 ;copy IM_objectoutput to IM_BROZoutput
move.w IM_BROWSEoutput,d4
move.l (a4,d4.w),d0
bsr CopyString
move.l #0,IRJ_OBJECTdir_configdefault+4
moveq #1,d0
bra BRO_DONE
;-----------
BRO.30 tst.l IRJ_BRUSHMAPSdir_configdefault+4 ;configflag
beq.s BRO.35 ;nope, leave it
movea.l IRJ_BRUSHMAPSdir_configdefault,a1
move.w IM_BRUSHMAPSdir,d4
movea.l (a4,d4.w),a0
bsr EXPANDconfigdefault
BRO.35 move.w IM_BRUSHMAPSfile,d4
move.l (a4,d4.w),d7 ;file
move.w IM_BRUSHMAPSdir,d4
move.l (a4,d4.w),d6 ;dir
move.l IRJ_BRUSHMAPSpat_configdefault,d5
move.w IM_BRUSHMAPSoutput,d4
bsr GetDirFile ;placed in BRSHMAP_output
tst.l d0
beq.s BRO_DONE ;cancel/error
move.w IM_BRUSHMAPSdir,d6
move.l (a4,d6.w),d6 ;dir
move.w IM_BRUSHMAPSfile,d7
move.l (a4,d7.w),d7 ;file
bsr SplitDirFile
move.w IM_BRUSHMAPSdir,d4
movea.l (a4,d4.w),a3
move.w IM_BROWSEdir,d4
move.l (a4,d4.w),d0
jsr CopyString
move.w IM_BRUSHMAPSfile,d4
movea.l (a4,d4.w),a3
move.w IM_BROWSEfile,d4
move.l (a4,d4.w),d0
jsr CopyString
move.w IM_BRUSHMAPSoutput,d4
movea.l (a4,d4.w),a3 ;copy IM_BRUSHMAPSoutput to IM_BROWSEoutput
move.w IM_BROWSEoutput,d4
move.l (a4,d4.w),d0
bsr CopyString
move.l #0,IRJ_BRUSHMAPSdir_configdefault+4
moveq #1,d0
bra.s BRO_DONE
;-----------
BRO_unknown move.l #0,d0
BRO_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
OBJECTREQUESTER
cmpi.l #3,IRJ_ImagineVersion
beq LOADSAVE30
cmpi.l #4,IRJ_ImagineVersion
beq LOADSAVE40
cmpi.l #5,IRJ_ImagineVersion
beq LOADSAVE50
bra LSR_unknown
;---------------------------------------------------------------------------
LOADSAVE30
move.l 156(a7),d0
sub.l IRJ_ImagineCodeBase,d0
cmpi.l #$64000,d0
blt LSR.025
cmpi.l #$79000,d0
blt LSR.045
cmpi.l #$7cd00,d0
blt LSR.055
cmpi.l #$7e000,d0
blt LSR.025
cmpi.l #$80200,d0
blt LSR.065
cmpi.l #$80b00,d0
blt LSR.025
cmpi.l #$82000,d0
blt LSR.065
cmpi.l #$85000,d0
blt LSR.025
cmpi.l #$b0000,d0
blt LSR.065
bra LSR_unknown
;---------------------------------------------------------------------------
LOADSAVE40
move.l 160(a7),d0
sub.l IRJ_ImagineCodeBase,d0
cmpi.l #$64000,d0
blt LSR.025
cmpi.l #$8e000,d0
blt LSR.045
cmpi.l #$8e900,d0
blt LSR.055
cmpi.l #$8f000,d0
blt LSR.025
cmpi.l #$92000,d0
blt LSR.065
cmpi.l #$92c00,d0
blt LSR.025
cmpi.l #$93800,d0
blt LSR.065
cmpi.l #$98000,d0
blt LSR.025
cmpi.l #$b1000,d0
blt LSR.035
cmpi.l #$ce000,d0
blt LSR.065
bra LSR_unknown
;---------------------------------------------------------------------------
LOADSAVE50
move.l 160(a7),d0
sub.l IRJ_ImagineCodeBase,d0
cmpi.l #$64000,d0
blt LSR.025
cmpi.l #$8e000,d0
blt LSR.045
cmpi.l #$92f00,d0
blt LSR.055
cmpi.l #$93800,d0
blt LSR.025
cmpi.l #$96b00,d0
blt LSR.065
cmpi.l #$97800,d0
blt LSR.025
cmpi.l #$98400,d0
blt LSR.065
cmpi.l #$9d000,d0
blt LSR.025
cmpi.l #$b7000,d0
blt LSR.035
cmpi.l #$d4000,d0
blt LSR.065
bra LSR_unknown
;---------------------------------------------------
;---------------------------------------------------
LSR.025 tst.l IRJ_OBJECTdir_configdefault+4 ;configflag
beq.s LSR.030 ;nope, leave it
movea.l IRJ_OBJECTdir_configdefault,a1
movea.l IRJ_OBJECTdir,a0
bsr EXPANDconfigdefault
move.l #0,IRJ_OBJECTdir_configdefault+4
LSR.030 move.l IRJ_OBJECTfile,d7
move.l IRJ_OBJECTdir,d6
move.l IRJ_OBJECTpat_configdefault,d5
bra LOADSAVE
;-----
LSR.035 tst.l IRJ_DXFdir_configdefault+4 ;configflag
beq.s LSR.040 ;nope, leave it
movea.l IRJ_DXFdir_configdefault,a1
movea.l IRJ_DXFdir,a0
bsr EXPANDconfigdefault
move.l #0,IRJ_DXFdir_configdefault+4
LSR.040 move.l IRJ_DXFfile,d7
move.l IRJ_DXFdir,d6
move.l IRJ_DXFpat_configdefault,d5
bra LOADSAVE
;-----
LSR.045 tst.l IRJ_FORMdir_configdefault+4 ;configflag
beq.s LSR.050 ;nope, leave it
movea.l IRJ_FORMdir_configdefault,a1
movea.l IRJ_FORMdir,a0
bsr EXPANDconfigdefault
move.l #0,IRJ_FORMdir_configdefault+4
LSR.050 move.l IRJ_FORMfile,d7
move.l IRJ_FORMdir,d6
move.l IRJ_FORMpat_configdefault,d5
bra LOADSAVE
;-----
LSR.055 tst.l IRJ_CYCLEdir_configdefault+4 ;configflag
beq.s LSR.060 ;nope, leave it
movea.l IRJ_CYCLEdir_configdefault,a1
movea.l IRJ_CYCLEdir,a0
bsr EXPANDconfigdefault
move.l #0,IRJ_CYCLEdir_configdefault+4
LSR.060 move.l IRJ_CYCLEfile,d7
move.l IRJ_CYCLEdir,d6
move.l IRJ_CYCLEpat_configdefault,d5
bra LOADSAVE
;-----
LSR.065 tst.l IRJ_SPLINEdir_configdefault+4 ;configflag
beq.s LSR.070 ;nope, leave it
movea.l IRJ_SPLINEdir_configdefault,a1
movea.l IRJ_SPLINEdir,a0
bsr EXPANDconfigdefault
move.l #0,IRJ_SPLINEdir_configdefault+4
LSR.070 move.l IRJ_SPLINEfile,d7
move.l IRJ_SPLINEdir,d6
move.l IRJ_SPLINEpat_configdefault,d5
bra LOADSAVE
;---------------------------------------------------
LOADSAVE move.w IM_OBJECToutput,d4
bsr GetDirFile ;output = IM_OBJECToutput(a4)
tst.l d0
beq LSR_DONE ;cancel/error
bsr SplitDirFile ;back into d6&d7
movea.l d6,a1
move.w IM_OBJECTdir,d6
movea.l (a4,d6.w),a2
LS.05 move.b (a1)+,(a2)+
bne.s LS.05
movea.l d7,a1
move.w IM_OBJECTfile,d7
movea.l (a4,d7.w),a2
LS.10 move.b (a1)+,(a2)+
bne.s LS.10
moveq #1,d0
bra.s LSR_DONE
;----------
LSR_unknown
movem.l d0-d1/d7/a0-a1/a6,-(sp)
move.l d0,d7
movea.l _AbsExecBase,a6
jsr _LVOAlert(a6)
movem.l (sp)+,d0-d1/d7/a0-a1/a6
move.l #0,d0
LSR_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
REXXREQUESTER
tst.l IRJ_REXXdir_configdefault+4 ;configflag
beq.s REX.05 ;nope, leave it
movea.l IRJ_REXXdir_configdefault,a1
move.w IM_REXXdir,d4
movea.l (a4,d4.w),a0
bsr EXPANDconfigdefault
REX.05 move.w IM_REXXfile,d4
move.l (a4,d4.w),d7
move.w IM_REXXdir,d4
move.l (a4,d4.w),d6
move.l IRJ_REXXpat_configdefault,d5
move.w IM_REXXoutput,d4
move.l (a4,d4.w),d4
bsr GetDirFile
tst.l d0
beq.s REX_DONE ;cancel/error
bsr SplitDirFile
move.l #0,IRJ_REXXdir_configdefault+4
moveq #1,d0
;-----------
REX_DONE movem.l (sp)+,d1-d7/a0-a3/a6
rts
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------